with Ada.Strings.Unbounded;

package Pair is

   --  Type for objects that store a pair.
   type Pair_Type is private;

   --  Creates a new key value pair.
   function Create (Key : String; Value : String) return Pair_Type;
   --  Sets the key of this key value pair.
   procedure Set_Key (Pair : in out Pair_Type; Key : String);
   --  Returns the key of this key value pair.
   function Key (Pair : Pair_Type) return String;
   --  Sets the value of this key value pair.
   procedure Set_Value (Pair : in out Pair_Type; Value : String);
   --  Returns the value of this key value pair.
   function Value (Pair : Pair_Type) return String;
   --  Compares two key value objects.
   function "=" (First : Pair_Type; Second : Pair_Type) return Boolean;

private

   type Pair_Type is record
      Key : Ada.Strings.Unbounded.Unbounded_String;
      Value : Ada.Strings.Unbounded.Unbounded_String;
   end record;

end Pair;
